(0) Obligation:

Clauses:

dis(or(B1, B2)) :- ','(con(B1), dis(B2)).
dis(B) :- con(B).
con(and(B1, B2)) :- ','(dis(B1), con(B2)).
con(B) :- bool(B).
bool(0).
bool(1).

Query: con(g)

(1) PrologToDTProblemTransformerProof (SOUND transformation)

Built DT problem from termination graph DT10.

(2) Obligation:

Triples:

disB(or(X1, X2)) :- conA(X1).
disB(or(X1, X2)) :- ','(concA(X1), disB(X2)).
disB(X1) :- conA(X1).
conA(and(or(X1, X2), X3)) :- conA(X1).
conA(and(or(X1, X2), X3)) :- ','(concA(X1), disB(X2)).
conA(and(or(X1, X2), X3)) :- ','(concA(X1), ','(discB(X2), conA(X3))).
conA(and(X1, X2)) :- conA(X1).
conA(and(X1, X2)) :- ','(concA(X1), conA(X2)).

Clauses:

concA(and(or(X1, X2), X3)) :- ','(concA(X1), ','(discB(X2), concA(X3))).
concA(and(X1, X2)) :- ','(concA(X1), concA(X2)).
concA(0).
concA(1).
discB(or(X1, X2)) :- ','(concA(X1), discB(X2)).
discB(X1) :- concA(X1).

Afs:

conA(x1)  =  conA(x1)

(3) TriplesToPiDPProof (SOUND transformation)

We use the technique of [DT09]. With regard to the inferred argument filtering the predicates were used in the following modes:
conA_in: (b)
concA_in: (b)
discB_in: (b)
disB_in: (b)
Transforming TRIPLES into the following Term Rewriting System:
Pi DP problem:
The TRS P consists of the following rules:

CONA_IN_G(and(or(X1, X2), X3)) → U5_G(X1, X2, X3, conA_in_g(X1))
CONA_IN_G(and(or(X1, X2), X3)) → CONA_IN_G(X1)
CONA_IN_G(and(or(X1, X2), X3)) → U6_G(X1, X2, X3, concA_in_g(X1))
U6_G(X1, X2, X3, concA_out_g(X1)) → U7_G(X1, X2, X3, disB_in_g(X2))
U6_G(X1, X2, X3, concA_out_g(X1)) → DISB_IN_G(X2)
DISB_IN_G(or(X1, X2)) → U1_G(X1, X2, conA_in_g(X1))
DISB_IN_G(or(X1, X2)) → CONA_IN_G(X1)
CONA_IN_G(and(X1, X2)) → U10_G(X1, X2, conA_in_g(X1))
CONA_IN_G(and(X1, X2)) → CONA_IN_G(X1)
CONA_IN_G(and(X1, X2)) → U11_G(X1, X2, concA_in_g(X1))
U11_G(X1, X2, concA_out_g(X1)) → U12_G(X1, X2, conA_in_g(X2))
U11_G(X1, X2, concA_out_g(X1)) → CONA_IN_G(X2)
DISB_IN_G(or(X1, X2)) → U2_G(X1, X2, concA_in_g(X1))
U2_G(X1, X2, concA_out_g(X1)) → U3_G(X1, X2, disB_in_g(X2))
U2_G(X1, X2, concA_out_g(X1)) → DISB_IN_G(X2)
DISB_IN_G(X1) → U4_G(X1, conA_in_g(X1))
DISB_IN_G(X1) → CONA_IN_G(X1)
U6_G(X1, X2, X3, concA_out_g(X1)) → U8_G(X1, X2, X3, discB_in_g(X2))
U8_G(X1, X2, X3, discB_out_g(X2)) → U9_G(X1, X2, X3, conA_in_g(X3))
U8_G(X1, X2, X3, discB_out_g(X2)) → CONA_IN_G(X3)

The TRS R consists of the following rules:

concA_in_g(and(or(X1, X2), X3)) → U14_g(X1, X2, X3, concA_in_g(X1))
concA_in_g(and(X1, X2)) → U17_g(X1, X2, concA_in_g(X1))
concA_in_g(0) → concA_out_g(0)
concA_in_g(1) → concA_out_g(1)
U17_g(X1, X2, concA_out_g(X1)) → U18_g(X1, X2, concA_in_g(X2))
U18_g(X1, X2, concA_out_g(X2)) → concA_out_g(and(X1, X2))
U14_g(X1, X2, X3, concA_out_g(X1)) → U15_g(X1, X2, X3, discB_in_g(X2))
discB_in_g(or(X1, X2)) → U19_g(X1, X2, concA_in_g(X1))
U19_g(X1, X2, concA_out_g(X1)) → U20_g(X1, X2, discB_in_g(X2))
discB_in_g(X1) → U21_g(X1, concA_in_g(X1))
U21_g(X1, concA_out_g(X1)) → discB_out_g(X1)
U20_g(X1, X2, discB_out_g(X2)) → discB_out_g(or(X1, X2))
U15_g(X1, X2, X3, discB_out_g(X2)) → U16_g(X1, X2, X3, concA_in_g(X3))
U16_g(X1, X2, X3, concA_out_g(X3)) → concA_out_g(and(or(X1, X2), X3))

Pi is empty.
We have to consider all (P,R,Pi)-chains

Infinitary Constructor Rewriting Termination of PiDP implies Termination of TRIPLES

(4) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

CONA_IN_G(and(or(X1, X2), X3)) → U5_G(X1, X2, X3, conA_in_g(X1))
CONA_IN_G(and(or(X1, X2), X3)) → CONA_IN_G(X1)
CONA_IN_G(and(or(X1, X2), X3)) → U6_G(X1, X2, X3, concA_in_g(X1))
U6_G(X1, X2, X3, concA_out_g(X1)) → U7_G(X1, X2, X3, disB_in_g(X2))
U6_G(X1, X2, X3, concA_out_g(X1)) → DISB_IN_G(X2)
DISB_IN_G(or(X1, X2)) → U1_G(X1, X2, conA_in_g(X1))
DISB_IN_G(or(X1, X2)) → CONA_IN_G(X1)
CONA_IN_G(and(X1, X2)) → U10_G(X1, X2, conA_in_g(X1))
CONA_IN_G(and(X1, X2)) → CONA_IN_G(X1)
CONA_IN_G(and(X1, X2)) → U11_G(X1, X2, concA_in_g(X1))
U11_G(X1, X2, concA_out_g(X1)) → U12_G(X1, X2, conA_in_g(X2))
U11_G(X1, X2, concA_out_g(X1)) → CONA_IN_G(X2)
DISB_IN_G(or(X1, X2)) → U2_G(X1, X2, concA_in_g(X1))
U2_G(X1, X2, concA_out_g(X1)) → U3_G(X1, X2, disB_in_g(X2))
U2_G(X1, X2, concA_out_g(X1)) → DISB_IN_G(X2)
DISB_IN_G(X1) → U4_G(X1, conA_in_g(X1))
DISB_IN_G(X1) → CONA_IN_G(X1)
U6_G(X1, X2, X3, concA_out_g(X1)) → U8_G(X1, X2, X3, discB_in_g(X2))
U8_G(X1, X2, X3, discB_out_g(X2)) → U9_G(X1, X2, X3, conA_in_g(X3))
U8_G(X1, X2, X3, discB_out_g(X2)) → CONA_IN_G(X3)

The TRS R consists of the following rules:

concA_in_g(and(or(X1, X2), X3)) → U14_g(X1, X2, X3, concA_in_g(X1))
concA_in_g(and(X1, X2)) → U17_g(X1, X2, concA_in_g(X1))
concA_in_g(0) → concA_out_g(0)
concA_in_g(1) → concA_out_g(1)
U17_g(X1, X2, concA_out_g(X1)) → U18_g(X1, X2, concA_in_g(X2))
U18_g(X1, X2, concA_out_g(X2)) → concA_out_g(and(X1, X2))
U14_g(X1, X2, X3, concA_out_g(X1)) → U15_g(X1, X2, X3, discB_in_g(X2))
discB_in_g(or(X1, X2)) → U19_g(X1, X2, concA_in_g(X1))
U19_g(X1, X2, concA_out_g(X1)) → U20_g(X1, X2, discB_in_g(X2))
discB_in_g(X1) → U21_g(X1, concA_in_g(X1))
U21_g(X1, concA_out_g(X1)) → discB_out_g(X1)
U20_g(X1, X2, discB_out_g(X2)) → discB_out_g(or(X1, X2))
U15_g(X1, X2, X3, discB_out_g(X2)) → U16_g(X1, X2, X3, concA_in_g(X3))
U16_g(X1, X2, X3, concA_out_g(X3)) → concA_out_g(and(or(X1, X2), X3))

Pi is empty.
We have to consider all (P,R,Pi)-chains

(5) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LOPSTR] contains 1 SCC with 8 less nodes.

(6) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

CONA_IN_G(and(or(X1, X2), X3)) → U6_G(X1, X2, X3, concA_in_g(X1))
U6_G(X1, X2, X3, concA_out_g(X1)) → DISB_IN_G(X2)
DISB_IN_G(or(X1, X2)) → CONA_IN_G(X1)
CONA_IN_G(and(or(X1, X2), X3)) → CONA_IN_G(X1)
CONA_IN_G(and(X1, X2)) → CONA_IN_G(X1)
CONA_IN_G(and(X1, X2)) → U11_G(X1, X2, concA_in_g(X1))
U11_G(X1, X2, concA_out_g(X1)) → CONA_IN_G(X2)
DISB_IN_G(or(X1, X2)) → U2_G(X1, X2, concA_in_g(X1))
U2_G(X1, X2, concA_out_g(X1)) → DISB_IN_G(X2)
DISB_IN_G(X1) → CONA_IN_G(X1)
U6_G(X1, X2, X3, concA_out_g(X1)) → U8_G(X1, X2, X3, discB_in_g(X2))
U8_G(X1, X2, X3, discB_out_g(X2)) → CONA_IN_G(X3)

The TRS R consists of the following rules:

concA_in_g(and(or(X1, X2), X3)) → U14_g(X1, X2, X3, concA_in_g(X1))
concA_in_g(and(X1, X2)) → U17_g(X1, X2, concA_in_g(X1))
concA_in_g(0) → concA_out_g(0)
concA_in_g(1) → concA_out_g(1)
U17_g(X1, X2, concA_out_g(X1)) → U18_g(X1, X2, concA_in_g(X2))
U18_g(X1, X2, concA_out_g(X2)) → concA_out_g(and(X1, X2))
U14_g(X1, X2, X3, concA_out_g(X1)) → U15_g(X1, X2, X3, discB_in_g(X2))
discB_in_g(or(X1, X2)) → U19_g(X1, X2, concA_in_g(X1))
U19_g(X1, X2, concA_out_g(X1)) → U20_g(X1, X2, discB_in_g(X2))
discB_in_g(X1) → U21_g(X1, concA_in_g(X1))
U21_g(X1, concA_out_g(X1)) → discB_out_g(X1)
U20_g(X1, X2, discB_out_g(X2)) → discB_out_g(or(X1, X2))
U15_g(X1, X2, X3, discB_out_g(X2)) → U16_g(X1, X2, X3, concA_in_g(X3))
U16_g(X1, X2, X3, concA_out_g(X3)) → concA_out_g(and(or(X1, X2), X3))

Pi is empty.
We have to consider all (P,R,Pi)-chains

(7) PiDPToQDPProof (EQUIVALENT transformation)

Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi.

(8) Obligation:

Q DP problem:
The TRS P consists of the following rules:

CONA_IN_G(and(or(X1, X2), X3)) → U6_G(X1, X2, X3, concA_in_g(X1))
U6_G(X1, X2, X3, concA_out_g(X1)) → DISB_IN_G(X2)
DISB_IN_G(or(X1, X2)) → CONA_IN_G(X1)
CONA_IN_G(and(or(X1, X2), X3)) → CONA_IN_G(X1)
CONA_IN_G(and(X1, X2)) → CONA_IN_G(X1)
CONA_IN_G(and(X1, X2)) → U11_G(X1, X2, concA_in_g(X1))
U11_G(X1, X2, concA_out_g(X1)) → CONA_IN_G(X2)
DISB_IN_G(or(X1, X2)) → U2_G(X1, X2, concA_in_g(X1))
U2_G(X1, X2, concA_out_g(X1)) → DISB_IN_G(X2)
DISB_IN_G(X1) → CONA_IN_G(X1)
U6_G(X1, X2, X3, concA_out_g(X1)) → U8_G(X1, X2, X3, discB_in_g(X2))
U8_G(X1, X2, X3, discB_out_g(X2)) → CONA_IN_G(X3)

The TRS R consists of the following rules:

concA_in_g(and(or(X1, X2), X3)) → U14_g(X1, X2, X3, concA_in_g(X1))
concA_in_g(and(X1, X2)) → U17_g(X1, X2, concA_in_g(X1))
concA_in_g(0) → concA_out_g(0)
concA_in_g(1) → concA_out_g(1)
U17_g(X1, X2, concA_out_g(X1)) → U18_g(X1, X2, concA_in_g(X2))
U18_g(X1, X2, concA_out_g(X2)) → concA_out_g(and(X1, X2))
U14_g(X1, X2, X3, concA_out_g(X1)) → U15_g(X1, X2, X3, discB_in_g(X2))
discB_in_g(or(X1, X2)) → U19_g(X1, X2, concA_in_g(X1))
U19_g(X1, X2, concA_out_g(X1)) → U20_g(X1, X2, discB_in_g(X2))
discB_in_g(X1) → U21_g(X1, concA_in_g(X1))
U21_g(X1, concA_out_g(X1)) → discB_out_g(X1)
U20_g(X1, X2, discB_out_g(X2)) → discB_out_g(or(X1, X2))
U15_g(X1, X2, X3, discB_out_g(X2)) → U16_g(X1, X2, X3, concA_in_g(X3))
U16_g(X1, X2, X3, concA_out_g(X3)) → concA_out_g(and(or(X1, X2), X3))

The set Q consists of the following terms:

concA_in_g(x0)
U17_g(x0, x1, x2)
U18_g(x0, x1, x2)
U14_g(x0, x1, x2, x3)
discB_in_g(x0)
U19_g(x0, x1, x2)
U21_g(x0, x1)
U20_g(x0, x1, x2)
U15_g(x0, x1, x2, x3)
U16_g(x0, x1, x2, x3)

We have to consider all (P,Q,R)-chains.

(9) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • DISB_IN_G(or(X1, X2)) → U2_G(X1, X2, concA_in_g(X1))
    The graph contains the following edges 1 > 1, 1 > 2

  • CONA_IN_G(and(or(X1, X2), X3)) → U6_G(X1, X2, X3, concA_in_g(X1))
    The graph contains the following edges 1 > 1, 1 > 2, 1 > 3

  • U6_G(X1, X2, X3, concA_out_g(X1)) → DISB_IN_G(X2)
    The graph contains the following edges 2 >= 1

  • U6_G(X1, X2, X3, concA_out_g(X1)) → U8_G(X1, X2, X3, discB_in_g(X2))
    The graph contains the following edges 1 >= 1, 4 > 1, 2 >= 2, 3 >= 3

  • CONA_IN_G(and(X1, X2)) → U11_G(X1, X2, concA_in_g(X1))
    The graph contains the following edges 1 > 1, 1 > 2

  • U2_G(X1, X2, concA_out_g(X1)) → DISB_IN_G(X2)
    The graph contains the following edges 2 >= 1

  • U11_G(X1, X2, concA_out_g(X1)) → CONA_IN_G(X2)
    The graph contains the following edges 2 >= 1

  • U8_G(X1, X2, X3, discB_out_g(X2)) → CONA_IN_G(X3)
    The graph contains the following edges 3 >= 1

  • DISB_IN_G(or(X1, X2)) → CONA_IN_G(X1)
    The graph contains the following edges 1 > 1

  • DISB_IN_G(X1) → CONA_IN_G(X1)
    The graph contains the following edges 1 >= 1

  • CONA_IN_G(and(or(X1, X2), X3)) → CONA_IN_G(X1)
    The graph contains the following edges 1 > 1

  • CONA_IN_G(and(X1, X2)) → CONA_IN_G(X1)
    The graph contains the following edges 1 > 1

(10) YES